{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The Very Basics of Musical Instruments Classification using Machine Learning\n",
    " \n",
    " \n",
    "<p align=\"right\">\n",
    "<img src=\"./img/knn.png\" width=\"500px\" alt=\"Intro\" align=\"left\" >\n",
    "</p>\n",
    "\n",
    "<br>\n",
    "\n",
    "<p align=\"left\">\n",
    "<img src=\"./img/businesscard.jpg\" width=\"300px\" alt=\"Business Card\" align=\"left\" >\n",
    "</p>\n",
    "<br>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Imports\n",
    "\n",
    "#General\n",
    "import numpy as np\n",
    "import itertools\n",
    "\n",
    "# System\n",
    "import os, fnmatch\n",
    "\n",
    "# Visualization\n",
    "import seaborn #visualization library, must be imported before all other plotting libraries\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython.core.display import HTML, display\n",
    "\n",
    "# Machine Learning\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedShuffleSplit\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import recall_score, precision_score, accuracy_score\n",
    "from sklearn.metrics import confusion_matrix, f1_score, classification_report\n",
    "\n",
    "# Random Seed\n",
    "from numpy.random import seed\n",
    "seed(1)\n",
    "\n",
    "# Audio\n",
    "import librosa.display, librosa"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Auxiliary Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to Display a Website\n",
    "def show_web(url):\n",
    "    html_code='<center><iframe src=\"%s\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>' \\\n",
    "\t\t% (url)\n",
    "    display(HTML(html_code))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<center><iframe src=\"http://www.philharmonia.co.uk/explore/sound_samples\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Dataset Information\n",
    "show_web(\"https://www.philharmonia.co.uk/explore/sound_samples\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get filenames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "found 600 audio files in ./audio/london_phill_dataset_multi/\n"
     ]
    }
   ],
   "source": [
    "# Get files in data path\n",
    "path='./audio/london_phill_dataset_multi/'\n",
    "# Get Audio Files\n",
    "files = []\n",
    "for root, dirnames, filenames in os.walk(path):\n",
    "    for filename in fnmatch.filter(filenames, '*.mp3'):\n",
    "        files.append(os.path.join(root, filename))\n",
    "\n",
    "print(\"found %d audio files in %s\"%(len(files),path))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prepare labels from filenames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get Labels\n",
    "labels =[]\n",
    "classes=['flute','sax','oboe', 'cello','trumpet','viola']\n",
    "color_dict={'cello':'blue', 'flute':'red', 'oboe':'green', 'trumpet':'black', 'sax':'magenta', 'viola':'yellow'}\n",
    "color_list=[]\n",
    "for filename in files:\n",
    "    for name in classes:\n",
    "        if fnmatch.fnmatchcase(filename, '*'+name+'*'):\n",
    "            labels.append(name)\n",
    "            color_list.append(color_dict[name])\n",
    "            break\n",
    "    else:\n",
    "        labels.append('other')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Encode Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6 classes: cello, flute, oboe, sax, trumpet, viola\n"
     ]
    }
   ],
   "source": [
    "# Encode Labels\n",
    "labelencoder = LabelEncoder()\n",
    "labelencoder.fit(labels)\n",
    "print(len(labelencoder.classes_), \"classes:\", \", \".join(list(labelencoder.classes_)))\n",
    "classes_num = labelencoder.transform(labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Parameters for MFCC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Parameters\n",
    "# Signal Processing Parameters\n",
    "fs = 44100         # Sampling Frequency\n",
    "n_fft = 2048       # length of the FFT window\n",
    "hop_length = 512   # Number of samples between successive frames\n",
    "n_mels = 128       # Number of Mel bands\n",
    "n_mfcc = 13        # Number of MFCCs\n",
    "\n",
    "# Machine Learning Parameters\n",
    "testset_size = 0.25 #Percentage of data for Testing\n",
    "n_neighbors=1       # Number of neighbors for kNN Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<center><iframe src=\"https://musicinformationretrieval.com/mfcc.html\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_web('https://musicinformationretrieval.com/mfcc.html')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Function to Calculate Audio Features: MFCC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define Function to Calculate MFCC, Delta_MFCC and Delta2_MFCC\n",
    "def get_features(y, sr=fs):\n",
    "    S = librosa.feature.melspectrogram(y, sr=fs, n_mels=n_mels)\n",
    "    mfcc = librosa.feature.mfcc(S=librosa.power_to_db(S), n_mfcc=n_mfcc)\n",
    "    feature_vector = np.mean(mfcc,1)\n",
    "    #feature_vector = (feature_vector-np.mean(feature_vector))/np.std(feature_vector)\n",
    "    return feature_vector"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load audio files, calculate features and create feature vectors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 1 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_mezzo-piano_non-vibrato.mp3\n",
      "get 2 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_15_forte_arco-normal.mp3\n",
      "get 3 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_fortissimo_arco-normal.mp3\n",
      "get 4 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_piano_arco-normal.mp3\n",
      "get 5 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_mezzo-piano_arco-normal.mp3\n",
      "get 6 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_mezzo-piano_arco-normal.mp3\n",
      "get 7 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs2_025_pianissimo_arco-normal.mp3\n",
      "get 8 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_forte_arco-normal.mp3\n",
      "get 9 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_piano_arco-normal.mp3\n",
      "get 10 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_mezzo-piano_arco-normal.mp3\n",
      "get 11 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_pianissimo_arco-normal.mp3\n",
      "get 12 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_forte_arco-normal.mp3\n",
      "get 13 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_fortissimo_arco-normal.mp3\n",
      "get 14 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_mezzo-piano_arco-normal.mp3\n",
      "get 15 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_molto-vibrato.mp3\n",
      "get 16 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_mezzo-piano_arco-normal.mp3\n",
      "get 17 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_pianissimo_arco-normal.mp3\n",
      "get 18 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_forte_arco-normal.mp3\n",
      "get 19 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_pianissimo_arco-normal.mp3\n",
      "get 20 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_pianissimo_arco-normal.mp3\n",
      "get 21 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_pianissimo_arco-normal.mp3\n",
      "get 22 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_fortissimo_arco-normal.mp3\n",
      "get 23 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_forte_arco-normal.mp3\n",
      "get 24 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_pianissimo_arco-normal.mp3\n",
      "get 25 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_pianissimo_arco-normal.mp3\n",
      "get 26 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_pianissimo_arco-normal.mp3\n",
      "get 27 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_forte_arco-normal.mp3\n",
      "get 28 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_mezzo-forte_arco-harmonic.mp3\n",
      "get 29 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_15_forte_arco-normal.mp3\n",
      "get 30 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 31 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_fortissimo_arco-normal.mp3\n",
      "get 32 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_forte_arco-normal.mp3\n",
      "get 33 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_forte_arco-normal.mp3\n",
      "get 34 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_15_mezzo-piano_arco-normal.mp3\n",
      "get 35 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_pianissimo_arco-normal.mp3\n",
      "get 36 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_forte_arco-normal.mp3\n",
      "get 37 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_forte_arco-normal.mp3\n",
      "get 38 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_non-vibrato.mp3\n",
      "get 39 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_mezzo-piano_arco-normal.mp3\n",
      "get 40 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_mezzo-piano_arco-normal.mp3\n",
      "get 41 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_forte_arco-normal.mp3\n",
      "get 42 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_mezzo-piano_arco-normal.mp3\n",
      "get 43 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_fortissimo_arco-normal.mp3\n",
      "get 44 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_forte_arco-normal.mp3\n",
      "get 45 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_pianissimo_arco-normal.mp3\n",
      "get 46 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_fortissimo_arco-normal.mp3\n",
      "get 47 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_forte_arco-normal.mp3\n",
      "get 48 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_mezzo-piano_arco-normal.mp3\n",
      "get 49 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_15_mezzo-piano_arco-normal.mp3\n",
      "get 50 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_pianissimo_arco-normal.mp3\n",
      "get 51 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_forte_arco-normal.mp3\n",
      "get 52 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_mezzo-piano_arco-normal.mp3\n",
      "get 53 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_fortissimo_arco-normal.mp3\n",
      "get 54 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-forte_arco-harmonic.mp3\n",
      "get 55 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_arco-normal.mp3\n",
      "get 56 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_forte_arco-normal.mp3\n",
      "get 57 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_pianissimo_arco-normal.mp3\n",
      "get 58 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_forte_arco-normal.mp3\n",
      "get 59 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_pianissimo_arco-normal.mp3\n",
      "get 60 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_mezzo-piano_arco-normal.mp3\n",
      "get 61 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_mezzo-piano_arco-normal.mp3\n",
      "get 62 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 63 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_fortissimo_arco-normal.mp3\n",
      "get 64 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_fortissimo_arco-normal.mp3\n",
      "get 65 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_pianissimo_arco-normal.mp3\n",
      "get 66 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_fortissimo_arco-normal.mp3\n",
      "get 67 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_fortissimo_arco-normal.mp3\n",
      "get 68 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_arco-minor-trill.mp3\n",
      "get 69 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_fortissimo_arco-normal.mp3\n",
      "get 70 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_arco-normal.mp3\n",
      "get 71 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_arco-minor-trill.mp3\n",
      "get 72 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_pianissimo_arco-normal.mp3\n",
      "get 73 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_pianissimo_arco-normal.mp3\n",
      "get 74 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_mezzo-piano_arco-normal.mp3\n",
      "get 75 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_forte_arco-normal.mp3\n",
      "get 76 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_forte_arco-normal.mp3\n",
      "get 77 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_mezzo-piano_arco-normal.mp3\n",
      "get 78 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_forte_arco-normal.mp3\n",
      "get 79 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_fortissimo_arco-normal.mp3\n",
      "get 80 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_mezzo-piano_arco-normal.mp3\n",
      "get 81 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_pianissimo_arco-normal.mp3\n",
      "get 82 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_mezzo-piano_arco-normal.mp3\n",
      "get 83 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 84 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_pianissimo_arco-normal.mp3\n",
      "get 85 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_fortissimo_arco-normal.mp3\n",
      "get 86 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_fortissimo_arco-normal.mp3\n",
      "get 87 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_fortissimo_arco-normal.mp3\n",
      "get 88 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_pianissimo_arco-normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 89 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_fortissimo_arco-normal.mp3\n",
      "get 90 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_forte_arco-normal.mp3\n",
      "get 91 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_pianissimo_arco-normal.mp3\n",
      "get 92 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_fortissimo_arco-normal.mp3\n",
      "get 93 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_mezzo-piano_arco-normal.mp3\n",
      "get 94 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_forte_arco-normal.mp3\n",
      "get 95 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_mezzo-piano_arco-normal.mp3\n",
      "get 96 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_pianissimo_arco-normal.mp3\n",
      "get 97 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_fortissimo_arco-normal.mp3\n",
      "get 98 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_forte_arco-normal.mp3\n",
      "get 99 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 100 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_forte_arco-normal.mp3\n",
      "get 101 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_pianissimo_normal.mp3\n",
      "get 102 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_mezzo-piano_normal.mp3\n",
      "get 103 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_piano_normal.mp3\n",
      "get 104 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_piano_normal.mp3\n",
      "get 105 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_forte_normal.mp3\n",
      "get 106 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_mezzo-forte_normal.mp3\n",
      "get 107 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_piano_normal.mp3\n",
      "get 108 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_piano_normal.mp3\n",
      "get 109 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_mezzo-forte_normal.mp3\n",
      "get 110 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_forte_normal.mp3\n",
      "get 111 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_mezzo-piano_normal.mp3\n",
      "get 112 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_piano_normal.mp3\n",
      "get 113 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_piano_normal.mp3\n",
      "get 114 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_forte_normal.mp3\n",
      "get 115 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_pianissimo_normal.mp3\n",
      "get 116 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_forte_normal.mp3\n",
      "get 117 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 118 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_forte_normal.mp3\n",
      "get 119 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_mezzo-forte_normal.mp3\n",
      "get 120 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_mezzo-forte_normal.mp3\n",
      "get 121 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_piano_normal.mp3\n",
      "get 122 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_mezzo-forte_normal.mp3\n",
      "get 123 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_pianissimo_normal.mp3\n",
      "get 124 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_forte_normal.mp3\n",
      "get 125 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_mezzo-piano_normal.mp3\n",
      "get 126 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_forte_normal.mp3\n",
      "get 127 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_forte_normal.mp3\n",
      "get 128 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_mezzo-forte_normal.mp3\n",
      "get 129 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_mezzo-piano_normal.mp3\n",
      "get 130 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_mezzo-piano_normal.mp3\n",
      "get 131 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_forte_normal.mp3\n",
      "get 132 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_mezzo-forte_normal.mp3\n",
      "get 133 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_15_forte_normal.mp3\n",
      "get 134 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_piano_normal.mp3\n",
      "get 135 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 136 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_mezzo-piano_normal.mp3\n",
      "get 137 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_mezzo-forte_normal.mp3\n",
      "get 138 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_forte_normal.mp3\n",
      "get 139 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_piano_normal.mp3\n",
      "get 140 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_mezzo-piano_normal.mp3\n",
      "get 141 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_mezzo-forte_normal.mp3\n",
      "get 142 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_piano_normal.mp3\n",
      "get 143 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_forte_normal.mp3\n",
      "get 144 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_forte_normal.mp3\n",
      "get 145 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_piano_normal.mp3\n",
      "get 146 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_pianissimo_normal.mp3\n",
      "get 147 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_pianissimo_normal.mp3\n",
      "get 148 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_mezzo-piano_normal.mp3\n",
      "get 149 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_mezzo-forte_normal.mp3\n",
      "get 150 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_piano_normal.mp3\n",
      "get 151 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_forte_normal.mp3\n",
      "get 152 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_mezzo-piano_normal.mp3\n",
      "get 153 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_pianissimo_normal.mp3\n",
      "get 154 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_forte_normal.mp3\n",
      "get 155 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_pianissimo_normal.mp3\n",
      "get 156 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_mezzo-forte_normal.mp3\n",
      "get 157 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_pianissimo_normal.mp3\n",
      "get 158 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_piano_normal.mp3\n",
      "get 159 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_mezzo-forte_normal.mp3\n",
      "get 160 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_pianissimo_normal.mp3\n",
      "get 161 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_mezzo-piano_normal.mp3\n",
      "get 162 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_forte_normal.mp3\n",
      "get 163 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 164 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_piano_normal.mp3\n",
      "get 165 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_piano_normal.mp3\n",
      "get 166 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_fortissimo_minor-trill.mp3\n",
      "get 167 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_pianissimo_normal.mp3\n",
      "get 168 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_forte_normal.mp3\n",
      "get 169 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_pianissimo_normal.mp3\n",
      "get 170 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_mezzo-forte_normal.mp3\n",
      "get 171 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_mezzo-forte_normal.mp3\n",
      "get 172 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_mezzo-forte_normal.mp3\n",
      "get 173 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_mezzo-piano_normal.mp3\n",
      "get 174 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_forte_normal.mp3\n",
      "get 175 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_piano_normal.mp3\n",
      "get 176 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_pianissimo_normal.mp3\n",
      "get 177 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_pianissimo_normal.mp3\n",
      "get 178 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_pianissimo_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 179 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_pianissimo_normal.mp3\n",
      "get 180 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_forte_normal.mp3\n",
      "get 181 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_piano_normal.mp3\n",
      "get 182 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_piano_normal.mp3\n",
      "get 183 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_mezzo-forte_normal.mp3\n",
      "get 184 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 185 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_mezzo-piano_normal.mp3\n",
      "get 186 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_mezzo-piano_normal.mp3\n",
      "get 187 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_forte_normal.mp3\n",
      "get 188 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_pianissimo_normal.mp3\n",
      "get 189 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_pianissimo_normal.mp3\n",
      "get 190 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_forte_normal.mp3\n",
      "get 191 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_mezzo-piano_normal.mp3\n",
      "get 192 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_forte_normal.mp3\n",
      "get 193 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_pianissimo_normal.mp3\n",
      "get 194 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_pianissimo_normal.mp3\n",
      "get 195 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_piano_normal.mp3\n",
      "get 196 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_mezzo-forte_normal.mp3\n",
      "get 197 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_piano_normal.mp3\n",
      "get 198 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_mezzo-piano_normal.mp3\n",
      "get 199 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_pianissimo_normal.mp3\n",
      "get 200 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_piano_normal.mp3\n",
      "get 201 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_forte_normal.mp3\n",
      "get 202 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_15_fortissimo_normal.mp3\n",
      "get 203 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_fortissimo_normal.mp3\n",
      "get 204 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_15_pianissimo_normal.mp3\n",
      "get 205 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_piano_normal.mp3\n",
      "get 206 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_pianissimo_normal.mp3\n",
      "get 207 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_piano_normal.mp3\n",
      "get 208 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds5_1_forte_major-trill.mp3\n",
      "get 209 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_piano_normal.mp3\n",
      "get 210 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_forte_normal.mp3\n",
      "get 211 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_forte_normal.mp3\n",
      "get 212 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_piano_normal.mp3\n",
      "get 213 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_piano_normal.mp3\n",
      "get 214 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_piano_normal.mp3\n",
      "get 215 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_forte_normal.mp3\n",
      "get 216 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_fortissimo_normal.mp3\n",
      "get 217 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_fortissimo_normal.mp3\n",
      "get 218 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_forte_normal.mp3\n",
      "get 219 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_pianissimo_normal.mp3\n",
      "get 220 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_forte_normal.mp3\n",
      "get 221 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_fortissimo_normal.mp3\n",
      "get 222 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds5_1_forte_minor-trill.mp3\n",
      "get 223 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_piano_normal.mp3\n",
      "get 224 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_fortissimo_normal.mp3\n",
      "get 225 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_pianissimo_normal.mp3\n",
      "get 226 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_fortissimo_normal.mp3\n",
      "get 227 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_fortissimo_normal.mp3\n",
      "get 228 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_forte_normal.mp3\n",
      "get 229 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_piano_normal.mp3\n",
      "get 230 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_pianissimo_normal.mp3\n",
      "get 231 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_fortissimo_normal.mp3\n",
      "get 232 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_piano_normal.mp3\n",
      "get 233 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_fortissimo_normal.mp3\n",
      "get 234 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_piano_normal.mp3\n",
      "get 235 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_fortissimo_normal.mp3\n",
      "get 236 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_1_pianissimo_normal.mp3\n",
      "get 237 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_forte_normal.mp3\n",
      "get 238 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_forte_normal.mp3\n",
      "get 239 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_piano_normal.mp3\n",
      "get 240 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_piano_normal.mp3\n",
      "get 241 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_forte_normal.mp3\n",
      "get 242 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_pianissimo_normal.mp3\n",
      "get 243 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_pianissimo_normal.mp3\n",
      "get 244 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_fortissimo_normal.mp3\n",
      "get 245 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_fortissimo_normal.mp3\n",
      "get 246 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_fortissimo_normal.mp3\n",
      "get 247 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_mezzo-piano_normal.mp3\n",
      "get 248 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_forte_normal.mp3\n",
      "get 249 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_fortissimo_normal.mp3\n",
      "get 250 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_pianissimo_normal.mp3\n",
      "get 251 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_mezzo-forte_slap-tongue.mp3\n",
      "get 252 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_fortissimo_normal.mp3\n",
      "get 253 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_pianissimo_normal.mp3\n",
      "get 254 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_piano_normal.mp3\n",
      "get 255 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_pianissimo_normal.mp3\n",
      "get 256 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_mezzo-forte_normal.mp3\n",
      "get 257 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_fortissimo_normal.mp3\n",
      "get 258 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_pianissimo_normal.mp3\n",
      "get 259 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_mezzo-forte_normal.mp3\n",
      "get 260 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 261 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_forte_normal.mp3\n",
      "get 262 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_forte_normal.mp3\n",
      "get 263 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_pianissimo_normal.mp3\n",
      "get 264 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_forte_normal.mp3\n",
      "get 265 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_pianissimo_normal.mp3\n",
      "get 266 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_mezzo-piano_normal.mp3\n",
      "get 267 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_piano_normal.mp3\n",
      "get 268 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_piano_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 269 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_piano_normal.mp3\n",
      "get 270 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_pianissimo_normal.mp3\n",
      "get 271 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_forte_normal.mp3\n",
      "get 272 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_15_fortissimo_normal.mp3\n",
      "get 273 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_fortissimo_normal.mp3\n",
      "get 274 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_pianissimo_subtone.mp3\n",
      "get 275 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_pianissimo_normal.mp3\n",
      "get 276 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_piano_normal.mp3\n",
      "get 277 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_fortissimo_normal.mp3\n",
      "get 278 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_pianissimo_normal.mp3\n",
      "get 279 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_forte_normal.mp3\n",
      "get 280 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_forte_normal.mp3\n",
      "get 281 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_pianissimo_normal.mp3\n",
      "get 282 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_forte_normal.mp3\n",
      "get 283 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_pianissimo_normal.mp3\n",
      "get 284 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_fortissimo_normal.mp3\n",
      "get 285 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_pianissimo_normal.mp3\n",
      "get 286 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_fortissimo_normal.mp3\n",
      "get 287 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_fortissimo_normal.mp3\n",
      "get 288 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_1_piano_normal.mp3\n",
      "get 289 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_piano_normal.mp3\n",
      "get 290 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_mezzo-forte_normal.mp3\n",
      "get 291 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_forte_normal.mp3\n",
      "get 292 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_fortissimo_normal.mp3\n",
      "get 293 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_mezzo-piano_normal.mp3\n",
      "get 294 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_forte_normal.mp3\n",
      "get 295 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 296 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_forte_normal.mp3\n",
      "get 297 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_pianissimo_normal.mp3\n",
      "get 298 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_fortissimo_normal.mp3\n",
      "get 299 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_forte_normal.mp3\n",
      "get 300 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_mezzo-piano_normal.mp3\n",
      "get 301 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_pianissimo_arco-normal.mp3\n",
      "get 302 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_mezzo-piano_arco-normal.mp3\n",
      "get 303 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_arco-major-trill.mp3\n",
      "get 304 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_fortissimo_arco-normal.mp3\n",
      "get 305 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_mezzo-piano_arco-normal.mp3\n",
      "get 306 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_pianissimo_arco-normal.mp3\n",
      "get 307 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_forte_arco-normal.mp3\n",
      "get 308 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_mezzo-piano_arco-normal.mp3\n",
      "get 309 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_pianissimo_arco-normal.mp3\n",
      "get 310 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_fortissimo_arco-normal.mp3\n",
      "get 311 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_pianissimo_arco-normal.mp3\n",
      "get 312 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_pianissimo_arco-normal.mp3\n",
      "get 313 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_fortissimo_pizz-normal.mp3\n",
      "get 314 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_forte_arco-normal.mp3\n",
      "get 315 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_forte_arco-normal.mp3\n",
      "get 316 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_fortissimo_snap-pizz.mp3\n",
      "get 317 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_mezzo-piano_arco-normal.mp3\n",
      "get 318 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_mezzo-piano_arco-normal.mp3\n",
      "get 319 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_mezzo-piano_arco-normal.mp3\n",
      "get 320 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_mezzo-piano_arco-normal.mp3\n",
      "get 321 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_fortissimo_arco-normal.mp3\n",
      "get 322 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_15_forte_arco-normal.mp3\n",
      "get 323 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_15_fortissimo_arco-normal.mp3\n",
      "get 324 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_fortissimo_arco-normal.mp3\n",
      "get 325 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_pianissimo_arco-normal.mp3\n",
      "get 326 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_mezzo-piano_arco-normal.mp3\n",
      "get 327 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_pianissimo_arco-normal.mp3\n",
      "get 328 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_15_fortissimo_arco-normal.mp3\n",
      "get 329 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_fortissimo_arco-normal.mp3\n",
      "get 330 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_piano_arco-normal.mp3\n",
      "get 331 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_pianissimo_arco-normal.mp3\n",
      "get 332 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_arco-minor-trill.mp3\n",
      "get 333 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_fortissimo_arco-normal.mp3\n",
      "get 334 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_piano_arco-normal.mp3\n",
      "get 335 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_1_piano_pizz-normal.mp3\n",
      "get 336 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_forte_arco-normal.mp3\n",
      "get 337 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_15_pianissimo_arco-normal.mp3\n",
      "get 338 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_fortissimo_arco-normal.mp3\n",
      "get 339 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_piano_arco-normal.mp3\n",
      "get 340 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_piano_arco-normal.mp3\n",
      "get 341 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_pianissimo_arco-normal.mp3\n",
      "get 342 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_fortissimo_arco-normal.mp3\n",
      "get 343 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_forte_arco-normal.mp3\n",
      "get 344 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_pianissimo_arco-normal.mp3\n",
      "get 345 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_pizz-normal.mp3\n",
      "get 346 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_pianissimo_arco-normal.mp3\n",
      "get 347 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_fortissimo_arco-normal.mp3\n",
      "get 348 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_pianissimo_arco-normal.mp3\n",
      "get 349 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_fortissimo_arco-normal.mp3\n",
      "get 350 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_fortissimo_arco-normal.mp3\n",
      "get 351 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_mezzo-piano_non-vibrato.mp3\n",
      "get 352 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_arco-normal.mp3\n",
      "get 353 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_piano_arco-normal.mp3\n",
      "get 354 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_pianissimo_arco-normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 355 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_pianissimo_arco-normal.mp3\n",
      "get 356 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_fortissimo_arco-normal.mp3\n",
      "get 357 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_fortissimo_arco-normal.mp3\n",
      "get 358 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_pianissimo_arco-normal.mp3\n",
      "get 359 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_05_mezzo-piano_arco-normal.mp3\n",
      "get 360 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_arco-normal.mp3\n",
      "get 361 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_fortissimo_arco-normal.mp3\n",
      "get 362 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_piano_arco-normal.mp3\n",
      "get 363 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_mezzo-forte_artificial-harmonic.mp3\n",
      "get 364 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_arco-glissando.mp3\n",
      "get 365 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_piano_arco-normal.mp3\n",
      "get 366 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_piano_arco-normal.mp3\n",
      "get 367 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_forte_arco-normal.mp3\n",
      "get 368 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_forte_arco-normal.mp3\n",
      "get 369 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_piano_arco-normal.mp3\n",
      "get 370 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_fortissimo_snap-pizz.mp3\n",
      "get 371 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_pianissimo_arco-normal.mp3\n",
      "get 372 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_piano_arco-normal.mp3\n",
      "get 373 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_piano_arco-normal.mp3\n",
      "get 374 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_arco-glissando.mp3\n",
      "get 375 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_pianissimo_arco-normal.mp3\n",
      "get 376 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_pianissimo_arco-normal.mp3\n",
      "get 377 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_piano_arco-normal.mp3\n",
      "get 378 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_mezzo-piano_arco-normal.mp3\n",
      "get 379 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-piano_non-vibrato.mp3\n",
      "get 380 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_forte_arco-normal.mp3\n",
      "get 381 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_fortissimo_arco-normal.mp3\n",
      "get 382 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_fortissimo_arco-normal.mp3\n",
      "get 383 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_pizz-normal.mp3\n",
      "get 384 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_fortissimo_arco-normal.mp3\n",
      "get 385 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_fortissimo_arco-normal.mp3\n",
      "get 386 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_mezzo-piano_arco-normal.mp3\n",
      "get 387 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_piano_arco-normal.mp3\n",
      "get 388 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_forte_arco-normal.mp3\n",
      "get 389 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_pianissimo_arco-normal.mp3\n",
      "get 390 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_mezzo-forte_molto-vibrato.mp3\n",
      "get 391 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_05_fortissimo_arco-normal.mp3\n",
      "get 392 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_forte_arco-normal.mp3\n",
      "get 393 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_piano_arco-normal.mp3\n",
      "get 394 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_fortissimo_arco-normal.mp3\n",
      "get 395 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_pianissimo_arco-normal.mp3\n",
      "get 396 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_fortissimo_arco-normal.mp3\n",
      "get 397 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_mezzo-piano_arco-normal.mp3\n",
      "get 398 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_forte_arco-normal.mp3\n",
      "get 399 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_fortissimo_arco-normal.mp3\n",
      "get 400 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_molto-vibrato.mp3\n",
      "get 401 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_fortissimo_normal.mp3\n",
      "get 402 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_05_piano_normal.mp3\n",
      "get 403 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 404 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_piano_normal.mp3\n",
      "get 405 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_fortissimo_normal.mp3\n",
      "get 406 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_piano_normal.mp3\n",
      "get 407 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 408 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_fortissimo_normal.mp3\n",
      "get 409 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_minor-trill.mp3\n",
      "get 410 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_mezzo-forte_normal.mp3\n",
      "get 411 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_fortissimo_normal.mp3\n",
      "get 412 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_mezzo-forte_normal.mp3\n",
      "get 413 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_mezzo-forte_normal.mp3\n",
      "get 414 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_piano_normal.mp3\n",
      "get 415 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_piano_normal.mp3\n",
      "get 416 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_major-trill.mp3\n",
      "get 417 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_forte_normal.mp3\n",
      "get 418 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_forte_normal.mp3\n",
      "get 419 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_fortissimo_normal.mp3\n",
      "get 420 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_forte_normal.mp3\n",
      "get 421 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_piano_normal.mp3\n",
      "get 422 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_mezzo-forte_normal.mp3\n",
      "get 423 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_minor-trill.mp3\n",
      "get 424 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_forte_normal.mp3\n",
      "get 425 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_piano_normal.mp3\n",
      "get 426 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_15_forte_normal.mp3\n",
      "get 427 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_piano_normal.mp3\n",
      "get 428 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_normal.mp3\n",
      "get 429 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_fortissimo_normal.mp3\n",
      "get 430 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_piano_normal.mp3\n",
      "get 431 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_piano_normal.mp3\n",
      "get 432 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_piano_normal.mp3\n",
      "get 433 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_forte_normal.mp3\n",
      "get 434 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_forte_normal.mp3\n",
      "get 435 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_mezzo-forte_normal.mp3\n",
      "get 436 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_mezzo-forte_normal.mp3\n",
      "get 437 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_forte_normal.mp3\n",
      "get 438 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_forte_normal.mp3\n",
      "get 439 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_fortissimo_normal.mp3\n",
      "get 440 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_fortissimo_normal.mp3\n",
      "get 441 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_mezzo-forte_normal.mp3\n",
      "get 442 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_mezzo-forte_normal.mp3\n",
      "get 443 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_mezzo-forte_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 444 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_forte_normal.mp3\n",
      "get 445 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_mezzo-forte_normal.mp3\n",
      "get 446 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_forte_normal.mp3\n",
      "get 447 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_forte_normal.mp3\n",
      "get 448 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_piano_normal.mp3\n",
      "get 449 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 450 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_forte_normal.mp3\n",
      "get 451 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_forte_normal.mp3\n",
      "get 452 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_forte_normal.mp3\n",
      "get 453 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_piano_normal.mp3\n",
      "get 454 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_piano_normal.mp3\n",
      "get 455 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_piano_normal.mp3\n",
      "get 456 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_fortissimo_normal.mp3\n",
      "get 457 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_piano_normal.mp3\n",
      "get 458 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_piano_normal.mp3\n",
      "get 459 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_fortissimo_normal.mp3\n",
      "get 460 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_forte_normal.mp3\n",
      "get 461 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_piano_normal.mp3\n",
      "get 462 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_piano_normal.mp3\n",
      "get 463 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_forte_normal.mp3\n",
      "get 464 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_forte_normal.mp3\n",
      "get 465 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_forte_major-trill.mp3\n",
      "get 466 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_mezzo-forte_normal.mp3\n",
      "get 467 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_fortissimo_normal.mp3\n",
      "get 468 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_forte_minor-trill.mp3\n",
      "get 469 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_fortissimo_normal.mp3\n",
      "get 470 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_fortissimo_normal.mp3\n",
      "get 471 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_piano_normal.mp3\n",
      "get 472 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_forte_normal.mp3\n",
      "get 473 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_mezzo-forte_normal.mp3\n",
      "get 474 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_025_piano_normal.mp3\n",
      "get 475 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_fortissimo_normal.mp3\n",
      "get 476 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_mezzo-forte_normal.mp3\n",
      "get 477 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_15_piano_normal.mp3\n",
      "get 478 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_mezzo-forte_normal.mp3\n",
      "get 479 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_piano_normal.mp3\n",
      "get 480 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_forte_normal.mp3\n",
      "get 481 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_fortissimo_normal.mp3\n",
      "get 482 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_fortissimo_normal.mp3\n",
      "get 483 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 484 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_forte_normal.mp3\n",
      "get 485 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_piano_normal.mp3\n",
      "get 486 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_fortissimo_normal.mp3\n",
      "get 487 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_mezzo-forte_normal.mp3\n",
      "get 488 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_mezzo-forte_normal.mp3\n",
      "get 489 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_piano_normal.mp3\n",
      "get 490 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_piano_normal.mp3\n",
      "get 491 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_15_piano_normal.mp3\n",
      "get 492 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_piano_normal.mp3\n",
      "get 493 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_major-trill.mp3\n",
      "get 494 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_15_forte_normal.mp3\n",
      "get 495 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_fortissimo_normal.mp3\n",
      "get 496 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_normal.mp3\n",
      "get 497 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_mezzo-forte_normal.mp3\n",
      "get 498 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_forte_normal.mp3\n",
      "get 499 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_fortissimo_normal.mp3\n",
      "get 500 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_mezzo-forte_normal.mp3\n",
      "get 501 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_1_forte_normal.mp3\n",
      "get 502 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_05_pianissimo_normal.mp3\n",
      "get 503 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_05_pianissimo_normal.mp3\n",
      "get 504 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_15_pianissimo_normal.mp3\n",
      "get 505 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_05_pianissimo_normal.mp3\n",
      "get 506 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_05_forte_normal.mp3\n",
      "get 507 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_05_forte_normal.mp3\n",
      "get 508 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_1_pianissimo_normal.mp3\n",
      "get 509 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_05_forte_normal.mp3\n",
      "get 510 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D6_05_forte_normal.mp3\n",
      "get 511 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_05_pianissimo_normal.mp3\n",
      "get 512 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_15_pianissimo_normal.mp3\n",
      "get 513 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B4_025_forte_normal.mp3\n",
      "get 514 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C6_05_forte_normal.mp3\n",
      "get 515 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_1_pianissimo_normal.mp3\n",
      "get 516 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_05_pianissimo_normal.mp3\n",
      "get 517 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_05_pianissimo_normal.mp3\n",
      "get 518 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_05_pianissimo_normal.mp3\n",
      "get 519 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_1_pianissimo_normal.mp3\n",
      "get 520 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs6_025_forte_normal.mp3\n",
      "get 521 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_05_pianissimo_normal.mp3\n",
      "get 522 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D6_025_forte_normal.mp3\n",
      "get 523 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_05_forte_normal.mp3\n",
      "get 524 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E6_025_forte_normal.mp3\n",
      "get 525 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_025_forte_normal.mp3\n",
      "get 526 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_025_mezzo-forte_normal.mp3\n",
      "get 527 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_025_forte_normal.mp3\n",
      "get 528 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_1_pianissimo_normal.mp3\n",
      "get 529 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_1_forte_normal.mp3\n",
      "get 530 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_025_pianissimo_normal.mp3\n",
      "get 531 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_1_pianissimo_normal.mp3\n",
      "get 532 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_15_pianissimo_normal.mp3\n",
      "get 533 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_15_pianissimo_normal.mp3\n",
      "get 534 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_1_pianissimo_normal.mp3\n",
      "get 535 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_025_pianissimo_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 536 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_025_pianissimo_normal.mp3\n",
      "get 537 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_15_pianissimo_normal.mp3\n",
      "get 538 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_05_forte_normal.mp3\n",
      "get 539 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_025_pianissimo_normal.mp3\n",
      "get 540 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_15_pianissimo_normal.mp3\n",
      "get 541 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_1_forte_normal.mp3\n",
      "get 542 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_05_pianissimo_normal.mp3\n",
      "get 543 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_025_forte_normal.mp3\n",
      "get 544 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_025_pianissimo_normal.mp3\n",
      "get 545 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 546 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_025_forte_normal.mp3\n",
      "get 547 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_1_pianissimo_normal.mp3\n",
      "get 548 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_15_pianissimo_normal.mp3\n",
      "get 549 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_15_pianissimo_normal.mp3\n",
      "get 550 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_05_mezzo-forte_normal.mp3\n",
      "get 551 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A4_025_forte_normal.mp3\n",
      "get 552 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_05_pianissimo_normal.mp3\n",
      "get 553 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A4_05_forte_normal.mp3\n",
      "get 554 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_1_pianissimo_normal.mp3\n",
      "get 555 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B5_025_forte_normal.mp3\n",
      "get 556 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_1_mezzo-forte_normal.mp3\n",
      "get 557 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_025_forte_normal.mp3\n",
      "get 558 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_15_pianissimo_normal.mp3\n",
      "get 559 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_05_pianissimo_normal.mp3\n",
      "get 560 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_1_pianissimo_normal.mp3\n",
      "get 561 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E6_1_forte_normal.mp3\n",
      "get 562 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_05_forte_normal.mp3\n",
      "get 563 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_15_pianissimo_normal.mp3\n",
      "get 564 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_025_pianissimo_normal.mp3\n",
      "get 565 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_05_pianissimo_normal.mp3\n",
      "get 566 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_15_pianissimo_normal.mp3\n",
      "get 567 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_025_pianissimo_normal.mp3\n",
      "get 568 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_025_forte_normal.mp3\n",
      "get 569 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_025_pianissimo_normal.mp3\n",
      "get 570 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C6_025_forte_normal.mp3\n",
      "get 571 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_025_pianissimo_normal.mp3\n",
      "get 572 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_1_pianissimo_normal.mp3\n",
      "get 573 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D5_05_forte_normal.mp3\n",
      "get 574 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_025_forte_normal.mp3\n",
      "get 575 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds6_05_forte_normal.mp3\n",
      "get 576 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_05_forte_normal.mp3\n",
      "get 577 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B5_025_mezzo-forte_normal.mp3\n",
      "get 578 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_025_mezzo-forte_normal.mp3\n",
      "get 579 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As4_025_forte_normal.mp3\n",
      "get 580 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_05_forte_normal.mp3\n",
      "get 581 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_025_pianissimo_normal.mp3\n",
      "get 582 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds6_025_forte_normal.mp3\n",
      "get 583 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F4_025_pianissimo_normal.mp3\n",
      "get 584 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F4_05_pianissimo_normal.mp3\n",
      "get 585 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_05_mezzo-forte_normal.mp3\n",
      "get 586 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds5_05_forte_normal.mp3\n",
      "get 587 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs4_05_forte_normal.mp3\n",
      "get 588 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_025_pianissimo_normal.mp3\n",
      "get 589 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_025_forte_normal.mp3\n",
      "get 590 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs4_025_forte_normal.mp3\n",
      "get 591 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_1_pianissimo_normal.mp3\n",
      "get 592 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_15_pianissimo_normal.mp3\n",
      "get 593 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_1_pianissimo_normal.mp3\n",
      "get 594 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_05_forte_normal.mp3\n",
      "get 595 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_05_forte_normal.mp3\n",
      "get 596 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_15_mezzo-forte_normal.mp3\n",
      "get 597 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 598 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_05_mezzo-forte_normal.mp3\n",
      "get 599 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_025_pianissimo_normal.mp3\n",
      "get 600 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_05_forte_normal.mp3\n",
      "Calculated 600 feature vectors\n"
     ]
    }
   ],
   "source": [
    "# Load audio files, calculate features and create feature vectors\n",
    "feature_vectors = []\n",
    "sound_paths = []\n",
    "for i,f in enumerate(files):\n",
    "    print (\"get %d of %d = %s\"%(i+1, len(files), f))\n",
    "    try:\n",
    "        y, sr = librosa.load(f, sr=fs)\n",
    "        y/=y.max() #Normalize\n",
    "        if len(y) < 2:\n",
    "            print(\"Error loading %s\" % f)\n",
    "            continue\n",
    "        feat = get_features(y, sr)\n",
    "        feature_vectors.append(feat)\n",
    "        sound_paths.append(f)\n",
    "    except Exception as e:\n",
    "        print(\"Error loading %s. Error: %s\" % (f,e))\n",
    "        \n",
    "print(\"Calculated %d feature vectors\"%len(feature_vectors))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Standardization: Zero-Mean and Unit-Variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature vectors shape: (600, 13)\n"
     ]
    }
   ],
   "source": [
    "# Scale features using Standard Scaler\n",
    "scaler = StandardScaler()\n",
    "scaled_feature_vectors = scaler.fit_transform(np.array(feature_vectors))\n",
    "print(\"Feature vectors shape:\",scaled_feature_vectors.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train and Test Sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create Train and Test Set\n",
    "splitter = StratifiedShuffleSplit(n_splits=1, test_size=testset_size, random_state=0)\n",
    "splits = splitter.split(scaled_feature_vectors, classes_num)\n",
    "for train_index, test_index in splits:\n",
    "    train_set = scaled_feature_vectors[train_index]\n",
    "    test_set = scaled_feature_vectors[test_index]\n",
    "    train_classes = classes_num[train_index]\n",
    "    test_classes = classes_num[test_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train_set shape: (450, 13)\n",
      "test_set shape: (150, 13)\n",
      "train_classes shape: (450,)\n",
      "test_classes shape: (150,)\n"
     ]
    }
   ],
   "source": [
    "# Check Set Shapes\n",
    "print(\"train_set shape:\",train_set.shape)\n",
    "print(\"test_set shape:\",test_set.shape)\n",
    "print(\"train_classes shape:\",train_classes.shape)\n",
    "print(\"test_classes shape:\",test_classes.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<center><iframe src=\"https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_web(\"https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## kNN Classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# KNN Classifier\n",
    "n_neighbors=1\n",
    "model_knn = KNeighborsClassifier(n_neighbors=n_neighbors)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# kNN\n",
    "model_knn.fit(train_set, train_classes);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Predict using the Test Set\n",
    "predicted_labels = model_knn.predict(test_set)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall:  [1.   1.   0.96 0.92 1.   0.92]\n",
      "Precision:  [0.96 1.   1.   0.96 0.93 0.96]\n",
      "F1-Score:  [0.98 1.   0.98 0.94 0.96 0.94]\n",
      "Accuracy: 0.97  , 145\n",
      "Number of samples: 150\n"
     ]
    }
   ],
   "source": [
    "# Recall - the ability of the classifier to find all the positive samples\n",
    "print(\"Recall: \", recall_score(test_classes, predicted_labels,average=None))\n",
    "\n",
    "# Precision - The precision is intuitively the ability of the classifier not to \n",
    "#label as positive a sample that is negative\n",
    "print(\"Precision: \", precision_score(test_classes, predicted_labels,average=None))\n",
    "\n",
    "# F1-Score - The F1 score can be interpreted as a weighted average of the precision \n",
    "#and recall\n",
    "print(\"F1-Score: \", f1_score(test_classes, predicted_labels, average=None))\n",
    "\n",
    "# Accuracy - the number of correctly classified samples\n",
    "print(\"Accuracy: %.2f  ,\" % accuracy_score(test_classes, predicted_labels,normalize=True), accuracy_score(test_classes, predicted_labels,normalize=False) )\n",
    "print(\"Number of samples:\",test_classes.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute confusion matrix\n",
    "cnf_matrix = confusion_matrix(test_classes, predicted_labels)\n",
    "np.set_printoptions(precision=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to Plot Confusion Matrix\n",
    "# http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html\n",
    "def plot_confusion_matrix(cm, classes,\n",
    "                          normalize=False,\n",
    "                          title='Confusion matrix',\n",
    "                          cmap=plt.cm.Blues):\n",
    "    \"\"\"\n",
    "    This function prints and plots the confusion matrix.\n",
    "    Normalization can be applied by setting `normalize=True`.\n",
    "    \n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
    "        print(\"Normalized confusion matrix\")\n",
    "    else:\n",
    "        print('Confusion matrix, without normalization')\n",
    "    \"\"\"\n",
    "    #print(cm)\n",
    "\n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title)\n",
    "    plt.colorbar()\n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks, classes, rotation=45)\n",
    "    plt.yticks(tick_marks, classes)\n",
    "\n",
    "    fmt = '.2f' if normalize else 'd'\n",
    "    thresh = cm.max() / 2.\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        plt.text(j, i, format(cm[i, j], fmt),\n",
    "                 horizontalalignment=\"center\",\n",
    "                 color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x936 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot non-normalized confusion matrix\n",
    "plt.figure(figsize=(18,13))\n",
    "plot_confusion_matrix(cnf_matrix, classes=labelencoder.classes_,\n",
    "                      title='Confusion matrix, without normalization')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find wrong predicted samples indexes\n",
    "#wrong_predictions = [i for i, (e1, e2) in enumerate(zip(test_classes, predicted_labels)) if e1 != e2]\n",
    "wrong_predictions = [i for i, (e1, e2) in enumerate(zip(predicted_labels,test_classes)) if e1 != e2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['sax' 'viola' 'sax' 'viola' 'oboe']\n",
      "[4 3 5 0 4]\n",
      "['trumpet' 'sax' 'viola' 'cello' 'trumpet']\n",
      "['./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_forte_normal.mp3'\n",
      " './audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-piano_non-vibrato.mp3'\n",
      " './audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_pianissimo_subtone.mp3'\n",
      " './audio/london_phill_dataset_multi/viola/viola_A4_1_piano_pizz-normal.mp3'\n",
      " './audio/london_phill_dataset_multi/oboe/oboe_As3_05_mezzo-forte_normal.mp3']\n"
     ]
    }
   ],
   "source": [
    "# Find wrong predicted audio files\n",
    "print(np.array(labels)[test_index[wrong_predictions]])\n",
    "print(predicted_labels[wrong_predictions].T)\n",
    "print(labelencoder.inverse_transform(predicted_labels[wrong_predictions]))\n",
    "print(np.array(files)[test_index[wrong_predictions]])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
